package tec;

class TestPassagerStandard {
    
    
    void lancerTestPassagerStandard() {
	int nbTest = 0;
	
	
	
	testNom();
	System.out.print('.'); nbTest++;

	testEstDehors();
	System.out.print('.'); nbTest++;

	testEstAssis();
	System.out.print('.'); nbTest++;

	testEstDebout();
	System.out.print('.'); nbTest++;

	testAccepterSortie();
	System.out.print('.'); nbTest++;

	testAccepterPlaceAssise();
	System.out.print('.'); nbTest++;

	testAccepterPlaceDebout();
	System.out.print('.'); nbTest++;

	testNouvelArret();
	System.out.print('.'); nbTest++;
	
	testMonterDans();
	System.out.print('.'); nbTest++;
	
	System.out.println("(" + nbTest + "):OK: " + getClass().getName()); 
    }
    
    
    void testNom(){
	PassagerStandard passager = new PassagerStandard("Marc", 5);
	assert passager.nom() == "Marc" : "testNom Fail";
    }
    
    void testEstDehors(){
	PassagerStandard passager = new PassagerStandard("Marc", 5);
	 
	assert passager.estDehors() == true : "TestEstDehors fail";
    }
    
    void testEstAssis(){
	PassagerStandard passager = new PassagerStandard("Marc", 5, "assis");
	assert passager.estAssis() == true : "TestEstAssis fail";
    }
    
    void testEstDebout(){
	PassagerStandard passager = new PassagerStandard("Marc", 5, "debout");
	assert passager.estDebout() == true : "TestEstDebout fail";
    }
    
    void testAccepterSortie(){
	PassagerStandard passager = new PassagerStandard("Marc", 5, "debout");
	passager.accepterSortie();
	assert passager.estDehors() == true : "TestAccepterSortie fail";
    }

    void testAccepterPlaceAssise(){
	
	PassagerStandard passagerDehors = new PassagerStandard("Marc", 5, "dehors");
	PassagerStandard passagerDebout = new PassagerStandard("Marc", 5, "debout");
	
	passagerDehors.accepterPlaceAssise();
	passagerDebout.accepterPlaceAssise();
	
	assert passagerDebout.estAssis() == true : "TestAccepterPlaceAssise fail";
	assert passagerDehors.estAssis() == true : "TestAccepterPlaceAssise fail"; 
	
	
    }

    void testAccepterPlaceDebout(){
	PassagerStandard passagerDehors = new PassagerStandard("Marc", 5, "dehors");
	PassagerStandard passagerAssis = new PassagerStandard("Marc", 5, "assis");
	
	passagerDehors.accepterPlaceDebout();
	passagerAssis.accepterPlaceDebout();
	
	assert passagerAssis.estDebout() == true : "TestAccepterPlaceDebout fail";
	assert passagerDehors.estDebout() == true : "TestAccepterPlaceDebout fail";



    }
    
    void testNouvelArret(){
	Autobus f = new Autobus();
	f.status = Autobus.VIDE;
	
	PassagerStandard passager = new PassagerStandard("Marc", 5, "assis");
	passager.nouvelArret(f, 4);
	
	assert 0 == f.messages.size() : "TestNouvelArret fail";
	
	passager.nouvelArret(f, 5);
	assert "demanderSortie" == f.messages.getLast() : "TestNouvelArret fail";

    }
    
    void testMonterDans(){

	Autobus f_vide = new Autobus();
	f_vide.status = Autobus.ASSISDEBOUT;
	
	Autobus f_debout = new Autobus();
	f_debout.status = Autobus.DEBOUT;
	
	PassagerStandard passager = new PassagerStandard("Marc", 5);
	passager.monterDans(f_vide);
	assert 2 == f_vide.messages.size() : "TestMonderDans fail case vide";
	assert "aPlaceAssise" == f_vide.messages.get(1) :  "TestMonterDans fail case vide";   
	assert "demanderPlaceAssise" == f_vide.messages.get(2) : "TestMonterDans fail case vide";

	passager.monterDans(f_debout);
	assert 3 == f_debout.messages.size() : "TestMonderDans fail case debout";
	assert "aPlaceAssise" == f_debout.messages.get(1) :  "TestMonterDans fail case debout";   
	assert "aPlaceDebout" == f_debout.messages.get(2) : "TestMonterDans fail case debout";
	assert "demanderPlaceDebout" == f_debout.messages.get(3) : "TestMonterDans fail case debout";
    }
	
}